<?php

class TemplateController extends Controller
{
	/**
	 * @var string the default layout for the views. Defaults to '//layouts/column2', meaning
	 * using two-column layout. See 'protected/views/layouts/column2.php'.
	 */
	public $layout='//layouts/column1';
	
	public $defaultAction = 'search';
	/**
	 * @return array action filters
	 */
	public function filters()
	{
		return array(
			'accessControl', // perform access control for CRUD operations
		);
	}

	/**
	 * Specifies the access control rules.
	 * This method is used by the 'accessControl' filter.
	 * @return array access control rules
	 */
	public function accessRules()
	{
		return array(
			array('allow',  // allow all users to perform 'index' and 'view' actions
				'actions'=>array('search','preview','download'), //'index','view','create','update','admin','delete'
				'users'=>array('@'),
			),
//			array('allow', // allow authenticated user to perform 'create' and 'update' actions
//				'actions'=>array('create','update'),
//				'users'=>array('@'),
//			),
//			array('allow', // allow admin user to perform 'admin' and 'delete' actions
//				'actions'=>array('admin','delete'),
//				'users'=>array('admin'),
//			),
//			array('deny',  // deny all users
//				'users'=>array('*'),
//			),
		);
	}
	
	public function actionDownload()
	{
		$userId = Yii::app()->user->id; 
 		if($userId)
 		{
 			$user = User::model()->find('userId=?', array($userId));
			
 			if($user->accountBalance < 1)
 			{
 				//redirect to recharge
 				$this->redirect(array("product/spinarticle",'id'=>$userId));
 			}
 			else 
 			{
 				//response with text of template
 				if(isset($_REQUEST['templateId']))
 				{
 					$templateId = $_REQUEST['templateId'];
 					$sql = "select templateBody from tbl_template where templateId = ". $templateId .' ;';
 					$connection=Yii::app()->db;
 					$command=$connection->createCommand($sql);
 					$row=$command->queryRow();
 					if($row != null)
 					{
 						$user->accountBalance = $user->accountBalance - 1;
 						$user->save(false);
 						ResponseWrapHelper::_sendResponse(200,$row['templateBody']);
 					}
 				}
 			}
 			
 			//var_dump($userId);
			//find account
// 			$sql = 'select accountBalance from tbl_account where userId = '.$userId .';';
// 			$connection=Yii::app()->db;
// 			$command=$connection->createCommand($sql);
// 			$row=$command->queryRow();
// 			if($row)
// 			{
// 				$accountBalance = $row['accountBalance'];
// 				if($accountBalance < 1)
// 				{
					
// 				}
// 				else
// 				{
// 					//
// 				}
// 			}
// 			else 
// 			{
// 				$this->redirect(array("user/update/".$userId));
// 			}
			
 		}
 		else
 		{
			$this->redirect(array('site/login')); //$this->redirect(array('site/author'));
									  //$this->redirect(array('site/author','id'=>$model->id, 'title'=>$model->title));
 		}
	}
	
	public function actionPreview()
	{
		if(isset($_REQUEST['templateId']))
		{
			$templateId = $_REQUEST['templateId'];
			
			$template = Template::model()->findByPk($templateId);
			
			if($template != null)
			{
				$body = addslashes($template->templateBody);
				$preview = ArticleGenerateHelper::GenerateArticleByTemplate($body);
				//var_dump($preview);
//			$sql = "select templateBody from tbl_template where templateId = ". $templateId .' ;';
//			$connection=Yii::app()->db;
//			$command=$connection->createCommand($sql);
//			$row=$command->queryRow();
			//generate article
				ResponseWrapHelper::_sendDirectResponse($preview);
			}
		}
	}
	
	/**
	 * Displays a particular model.
	 * @param integer $id the ID of the model to be displayed
	 */
// 	public function actionView($id)
// 	{
// 		$this->render('view',array(
// 			'model'=>$this->loadModel($id),
// 		));
// 	}

	/**
	 * Creates a new model.
	 * If creation is successful, the browser will be redirected to the 'view' page.
	 */
// 	public function actionCreate()
// 	{
// 		$model=new Template;

// 		// Uncomment the following line if AJAX validation is needed
// 		// $this->performAjaxValidation($model);

// 		if(isset($_POST['Template']))
// 		{
// 			$model->attributes=$_POST['Template'];
// 			if($model->save())
// 				$this->redirect(array('view','id'=>$model->templateId));
// 		}

// 		$this->render('create',array(
// 			'model'=>$model,
// 		));
// 	}

	/**
	 * Updates a particular model.
	 * If update is successful, the browser will be redirected to the 'view' page.
	 * @param integer $id the ID of the model to be updated
	 */
// 	public function actionUpdate($id)
// 	{
// 		$model=$this->loadModel($id);

// 		// Uncomment the following line if AJAX validation is needed
// 		// $this->performAjaxValidation($model);

// 		if(isset($_POST['Template']))
// 		{
// 			$model->attributes=$_POST['Template'];
// 			if($model->save())
// 				$this->redirect(array('view','id'=>$model->templateId));
// 		}

// 		$this->render('update',array(
// 			'model'=>$model,
// 		));
// 	}

	/**
	 * Deletes a particular model.
	 * If deletion is successful, the browser will be redirected to the 'admin' page.
	 * @param integer $id the ID of the model to be deleted
	 */
// 	public function actionDelete($id)
// 	{
// 		if(Yii::app()->request->isPostRequest)
// 		{
// 			// we only allow deletion via POST request
// 			$this->loadModel($id)->delete();

// 			// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
// 			if(!isset($_GET['ajax']))
// 				$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
// 		}
// 		else
// 			throw new CHttpException(400,'Invalid request. Please do not repeat this request again.');
// 	}

	/**
	 * Lists all models.
	 */
// 	public function actionIndex()
// 	{
// 		$dataProvider=new CActiveDataProvider('Template');
// 		$this->render('index',array(
// 			'dataProvider'=>$dataProvider,
// 		));
// 	}

	/**
	 * Search all models.
	 */
	public function actionSearch()
	{
		$model=new Template('search');
		$model->unsetAttributes();  // clear any default values
		//if(isset($_GET['Template'])) ? I don't know why use this 
		$model->attributes=$_GET['Template'];
		if(!empty($_GET['keywords']))
			$model->setKeywords($_GET['keywords']);
		$this->render('admin',array(
			'model'=>$model,
		));
	}

	/**
	 * Returns the data model based on the primary key given in the GET variable.
	 * If the data model is not found, an HTTP exception will be raised.
	 * @param integer the ID of the model to be loaded
	 */
	public function loadModel($id)
	{
		$model=Template::model()->findByPk($id);
		if($model===null)
			throw new CHttpException(404,'The requested page does not exist.');
		return $model;
	}

	/**
	 * Performs the AJAX validation.
	 * @param CModel the model to be validated
	 */
	protected function performAjaxValidation($model)
	{
		if(isset($_POST['ajax']) && $_POST['ajax']==='template-form')
		{
			echo CActiveForm::validate($model);
			Yii::app()->end();
		}
	}
}
